package atop;

import basic.datastruct.二叉树.TreeNode;

import java.util.*;

/**
 * @创建人 MBY381
 * @创建时间 2022/4/15 21:43
 * @描述 暂无
 */
public class 之层序遍历 {
    public static void main(String[] args) {
        Queue<Integer> queue = new ArrayDeque<>();
        List<Integer> li = new ArrayList<>();
        queue.add(1);
        queue.add(2);
        queue.add(3);
        System.out.println(queue);
        System.out.println(queue.poll());
        System.out.println(queue);

        System.out.println(queue.peek());
        System.out.println(queue);
        Stack<Integer> st = new Stack<>();

    }

    public static List<List<Integer>> zigzagLevelOrder(TreeNode root) {
        List<List<Integer>> value = new ArrayList<>();//存储到的最终结果
        if (root == null)
            return value;
        int index = 0;//判断
        Queue<TreeNode> queue = new ArrayDeque<>();

        queue.add(root);
        while (!queue.isEmpty()) {
            List<Integer> va = new ArrayList<>();//临时 用于存储到value中
            int len = queue.size();//当前层节点的数量
            for (int i = 0; i < len; i++) {
                TreeNode node = queue.poll();
                if (index % 2 == 0)//根据奇偶 选择添加策略
                    va.add(node.val);
                else
                    va.add(0, node.val);
                if (node.left != null)
                    queue.add(node.left);
                if (node.right != null)
                    queue.add(node.right);
            }
            value.add(va);
            index++;
        }
        return value;
    }
}
